package com.mjf.scala.chapter07

import scala.collection.mutable

/**
 * Map集合
 */
object Scala07_TestMap {
  def main(args: Array[String]): Unit = {

    // 创建不可变Map集合   底层是hashMap
    val map: Map[String, Int] = Map("a" -> 1, "b" -> 2, "c" -> 3)
    println(map)

    // 遍历map集合
//    map.foreach((kv:(String, Int)) => println(kv))
    map.foreach(println)

    // keys 获取map集合中的所有key
    // values 获取map集合中的所有value
    for (elem <- map.keys) {println(elem + "--->" + map.get(elem))}

    println(map.get("a"))   // Some(1)
    println(map.get("a").get)   // 1

    // 在Scala语言中，为了避免空指针异常，如果获取的内容有可能为空，可以用Option表示
    // Option有两个子类，一个Some，一个None
    println(map.get("e"))   // None
//    println(map.get("e").getOrElse(0))    // 0，如果存在就取对应值，如果不存在就取默认值
    println(map.getOrElse("e", 0))  // 获取e的值，默认值为0


    // 创建可变map集合
    val map1: mutable.Map[String, Int] = mutable.Map("a" -> 1, "b" -> 2, "c" -> 3)

    // 添加
    map1.put("d", 4)

    // 删除
    map1.remove("b")

    // 修改
    map1.update("a", 20)
    map1("a") = 30    // 不可变集合不能用

    map1.foreach(println)


  }
}
